package com.bs.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.bs.exception.BusinessException;
import com.bs.model.Order;
import com.bs.vo.OrderCreateVo;

import java.util.List;

/**
 * 订单服务接口
 *
 * @author 陈晓琪
 * @since 2025-5-7 20:09:43
 */
public interface IOrderService extends IService<Order> {

    /**
     * 创建订单
     *
     * @param createVo 创建订单
     * @return 订单信息
     * @throws BusinessException 业务异常
     */
    Order createOrder(OrderCreateVo createVo) throws BusinessException;

    /**
     * 取消订单
     *
     * @param orderId 订单ID
     * @throws BusinessException 业务异常
     */
    void cancelOrder(String orderId) throws BusinessException;

    /**
     * 支付订单
     *
     * @param orderId 订单ID
     */
    void payOrder(String orderId);

    /**
     * 完成订单制作,已就绪,等待使用取餐码
     *
     * @param orderId 订单ID
     */
    void waitingOrderCode(String orderId);

    /**
     * 使用取餐码,取餐
     *
     * @param orderId   订单ID
     * @param orderCode 取餐码
     */
    void codeOrder(String orderId, String orderCode);

    /**
     * 查询全部订单
     *
     * @return 订单列表
     */
    List<Order> listOrder();

    /**
     * 管理员查询全部订单
     *
     * @return 订单列表
     */
    List<Order> listOrderManage();

}
